#include<iostream>//邻接表+深度优先遍历
#include<cstdio>
#include<cstring>
using namespace std;
struct edge
{
    int to,value;
    edge *next;
};
struct vnode
{
    int data=0;
    edge *next;
}*adjlist[100];
void addedge(int u,int v,int w)
{
    if(adjlist[v]==NULL)
        adjlist[v]= new  vnode;
    if(adjlist[u]==NULL)
        adjlist[u]=new vnode;
    if(adjlist[u]->next==NULL)
    {
        adjlist[u]->next = new edge;
        adjlist[u]->next->to=v;
        adjlist[u]->next->value=w;
    }
    else
    {
        edge *p=adjlist[u]->next;
        while(p->next!=NULL)p=p->next;
        p->next=new edge;
        p->next->to=v;
        p->next->value=w;
    }
}
bool is_come[100];
void dfs_edge(int now)
{
    cout<<now<<' ';
    edge *p=adjlist[now]->next;
    is_come[now]=true;
    while(p!=NULL)
    {
        if(is_come[p->to]==false)dfs_edge(p->to);
        p=p->next;
    }
    return ;
}
int main()
{
    int n,m;
    cin>>n>>m;
    int u,v,w;
    for(int i=1;i<=n;i++)
    {
        cin>>u>>v>>w;
        addedge(u,v,w);
    }
    memset(is_come,0,sizeof(is_come));
    dfs_edge(1);
    return 0;
}